package redecolaborativa.util;

import java.io.Serializable;

import redecolaborativa.excecoes.AtributoInvalidoException;
import redecolaborativa.objetos.Item;

/**
 * Classe utilitaria para verificar a ocorrencia de palavras.
 * @author Isabelly Rocha, Lilia Sampaio e Pedro Adelino.
 */
public class VerificadorDeOcorrencia implements Serializable {
	private static final long serialVersionUID = 1L;
	private static final String ESPACO = " ";
	private static final String VIRGULA = ",";
	
	/**
	 * Verifica a ocorrencia de uma palavra chave dentro dos atributos do item.
	 * @param string Um atributo do item
	 * @param palavra Palavra ser encontrada no atributo do item
	 * @return True caso haja a ocorrencia da palavra chave, False caso contrario
	 * @throws AtributoInvalidoException 
	 */
	public static boolean ocorre(Item item, String palavraChave, String atributo) throws AtributoInvalidoException {
		if(atributo.equals("nome")) {
			return ocorre(item.getNome(), palavraChave);
		} else if(atributo.equals("descricao")) {
			return ocorre(item.getDescricao(), palavraChave);
		} else if(atributo.equals("categoria")) {
			return ocorre(item.categorias(), palavraChave);
		} else throw new AtributoInvalidoException("Atributo inexistente");
	}
	
	/**
	 * Verifica a ocorrencia de uma dada palavra em um dada String.
	 * @param String a qual será verificada a ocorrencia de uma dada palavra
	 * @param Palavra que pode ocorrer na String dada como parametro ou nao
	 * @return True se a palavra ocorre na String e falso em caso contrario
	 */
	public static boolean ocorre(String string, String palavra) {
		String[] palavras = null;
		if (string.contains(VIRGULA)) {
			palavras = string.split(VIRGULA);
		} else if (string.contains(ESPACO)) {
			palavras = string.split(ESPACO);
		} else {
			return palavra.equalsIgnoreCase(string);
		}
		for (int i = 0; i < palavras.length; i++) {
			if (palavras[i].equalsIgnoreCase(palavra)) {
				return true;
			}
		} return string.equals(palavra);
	}

}
